<?php
declare (strict_types = 1);

namespace app\access\controller;

use app\access\model\Category;
use think\Exception;
use think\exception\HttpException;
use think\exception\ValidateException;
use think\Request;

class Goods
{
    /**
     * 商品的多条件搜索的接口
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request $request)
    {

        # 考虑异常处理情况
        try {
            // 代码体
            # 分页查询数据
            $page = $request->get('page',1);//当前页
            $limit = $request->get('limit',5);
            if (!is_numeric($page)) {
                abort(2001,'页码只能是数字');
            }
            if (!is_numeric($limit)) {
                abort(2001,'每页显示的条数只能是整数');
            }
            # 多搜索条件
            # 条件一 名称搜索
            $where = [];
            $goods_name = $request->get('goods_name');
            if (!empty($goods_name)) {
                $where[] = ["goods_name","like","%$goods_name%"];
            }
            # 条件二 上下茄状态搜索
            $status = $request->get('status');
            if ($status >= 0 ) {
                $where[] = ['is_on_sale','=',$status];
            }
            # 条件三。。。
            $data = \app\access\model\Goods::where($where)->paginate($limit)->toArray();
//            SQL 调试
//           echo  \app\access\model\Goods::getLastSql();die();
            dd($data);//变量调试
            return  "商品列表";
        }catch (Exception $exception) {
            // catch里面是捕获的异常
            return  fail(2001,$exception->getMessage());
        }catch (HttpException $httpException) {
            return  fail(2001,$httpException->getMessage());
        }


    }

    /**
     * 删除
     */
    public function delete(Request $request){
        # 考虑异常信息
        try {

            #最简单的、有问题的
//            $id = $request->post('id');
//            \app\access\model\Goods::destroy($id);
//            return  success();

            # 支持单挑删除、也支持批量数据删除
            $id = $request->post('id');
            if (is_numeric($id)) {
                # 删除之前、要判断商品是否上架、上架不不能删除
                $isOnSale = \app\access\model\Goods::where('is_on_sale','=',1)->find($id);
                if ($isOnSale)  {
                    return  fail(2003,"上架商品不能删除");
                }
                $result = \app\access\model\Goods::destroy($id);
            } else {
                # 删除之前、要判断商品是否上架、上架不不能删除
                $ids = explode(',',$id);
                $isOnSale = \app\access\model\Goods::where('is_on_sale','=',1)->WhereIn('id',$ids)->select();
                if ($isOnSale)  {
                    return  fail(2003,"上架商品不能删除");
                }
                $result = \app\access\model\Goods::destroy($ids);
            }
            if ($result) {
                return success();
            } else {
                return fail(2003,"删除失败");
            }
        }catch (Exception $exception) {
            # 不知道的错误信息
            return  fail(2001,$exception->getMessage());
        }catch (HttpException $httpException) {
            # 捕获http请求的错误信息
            return  fail(2001,$httpException->getMessage());
        }catch (ValidateException $validateException) {
            # 捕获的是验证类里面抛出的异常
            return  fail(2001,$validateException->getMessage());
        }
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

}
